gdk: Require passing screen size to translate_screen_coord()
authorBenjamin Otte <otte@redhat.com>
Fri, 9 Sep 2016 12:48:33 +0000 (14:48 +0200)
committerBenjamin Otte <otte@redhat.com>
Sun, 16 Oct 2016 16:17:21 +0000 (18:17 +0200)
gdk/gdkdevice.c
gdk/gdkdeviceprivate.h
gdk/win32/gdkdevice-wintab.c
gdk/x11/gdkdevice-xi2.c

index 92222ccd105262db9c6dd2dbe269338d8e101b3e..9f0c6e23d79af59b6a38772a0d1157b9304f3da9 100644 (file)
@@ -1784,6 +1784,8 @@ _gdk_device_translate_screen_coord (GdkDevice *device,
                                     GdkWindow *window,
                                     gdouble    window_root_x,
                                     gdouble    window_root_y,
+                                    gdouble    screen_width,
+                                    gdouble    screen_height,
                                     guint      index_,
                                     gdouble    value,
                                     gdouble   *axis_value)
@@ -1808,7 +1810,7 @@ _gdk_device_translate_screen_coord (GdkDevice *device,
   if (axis_info.use == GDK_AXIS_X)
     {
       if (axis_width > 0)
-        scale = gdk_screen_get_width (gdk_window_get_screen (window)) / axis_width;
+        scale = screen_width / axis_width;
       else
         scale = 1;
 
@@ -1817,7 +1819,7 @@ _gdk_device_translate_screen_coord (GdkDevice *device,
   else
     {
       if (axis_width > 0)
-        scale = gdk_screen_get_height (gdk_window_get_screen (window)) / axis_width;
+        scale = screen_height / axis_width;
       else
         scale = 1;
 
index 6dbc6016186c9a8394f87460d752a70d10b4bf97..22d5097d1264d9c6574e2029eacb2754af2b4eb1 100644 (file)
@@ -152,6 +152,8 @@ gboolean   _gdk_device_translate_screen_coord (GdkDevice *device,
                                                GdkWindow *window,
                                                gdouble    window_root_x,
                                                gdouble    window_root_y,
+                                               gdouble    screen_width,
+                                               gdouble    screen_height,
                                                guint      index,
                                                gdouble    value,
                                                gdouble   *axis_value);
index fb7f0f2d7d7d14c2c6eff081a4ddaf4ace1dd3af..18279a88623b1f20764b22def4445fa4a64a4454 100644 (file)
@@ -219,12 +219,13 @@ _gdk_device_wintab_translate_axes (GdkDeviceWintab *device_wintab,
                                    gdouble         *y)
 {
   GdkDevice *device;
-  GdkWindow *impl_window;
+  GdkWindow *impl_window, *root_window;
   gint root_x, root_y;
   gdouble temp_x, temp_y;
   gint i;
 
   device = GDK_DEVICE (device_wintab);
+  root_window = gdk_screen_get_root_window (gdk_window_get_screen (window));
   impl_window = _gdk_window_get_impl_window (window);
   temp_x = temp_y = 0;
 
@@ -246,7 +247,10 @@ _gdk_device_wintab_translate_axes (GdkDeviceWintab *device_wintab,
                                                 &axes[i]);
           else
             _gdk_device_translate_screen_coord (device, window,
-                                                root_x, root_y, i,
+                                                root_x, root_y,
+                                                gdk_window_get_width (root_window),
+                                                gdk_window_get_height (root_window),
+                                                i,
                                                 device_wintab->last_axis_data[i],
                                                 &axes[i]);
           if (use == GDK_AXIS_X)
index cd1849c51ea15162a5d45df0cf7f4c6a7dbb3b22..23816ecbe119f3308832d797260967d74449f703 100644 (file)
@@ -243,12 +243,16 @@ gdk_x11_device_xi2_get_state (GdkDevice       *device,
                 _gdk_device_translate_window_coord (device, window, j, value, &axes[j]);
               else
                 {
+                  GdkWindow *root_window;
                   gint root_x, root_y;
 
+                  root_window = gdk_screen_get_root_window (gdk_window_get_screen (window));
                   /* FIXME: Maybe root coords chaching should happen here */
                   gdk_window_get_origin (window, &root_x, &root_y);
                   _gdk_device_translate_screen_coord (device, window,
                                                       root_x, root_y,
+                                                      gdk_window_get_width (root_window),
+                                                      gdk_window_get_height (root_window),
                                                       j, value,
                                                       &axes[j]);
                 }